package com.itheima.config;

import com.itheima.service.DeptService;
import org.dom4j.io.SAXReader;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 定义第三方Bean时， 通常会单独定义一个配置类。
 * 注释掉SpringBoot启动类中创建第三方bean对象的代码
 */
@Configuration //配置类  (在配置类当中对第三方bean进行集中的配置管理)
public class CommonConfig {

    //声明第三方bean
    @Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean
    //通过@Bean注解的name/value属性指定bean名称, 如果未指定, 默认是方法名
    //如果我们在声明第三方bean对象的时候，需要进行依赖注入的方法：直接在bean定义方法中设置形参即可，容器会根据类型自动装配。
    public SAXReader saxReader(DeptService deptService){
        System.out.println(deptService);
        return new SAXReader();
    }
    /**
     * 关于Bean大家只需要保持一个原则：
     *
     * - 如果是在项目当中我们自己定义的类，想将这些类交给IOC容器管理，我们直接使用@Component以及它的衍生注解来声明就可以。
     * - 如果这个类它不是我们自己定义的，而是引入的第三方依赖当中提供的类，而且我们还想将这个类交给IOC容器管理。
     * 此时我们就需要在配置类中定义一个方法，在方法上加上一个@Bean注解，通过这种方式来声明第三方的bean对象。
     */
}
